package com.alks.function.mapper.finance.mtlcosts;

import com.alks.entity.data.entity.PcApAmt;
import com.alks.entity.data.entity.PcOutListDetail;
import com.alks.function.data.dto.finance.mtlcosts.OutListDetailDto;
import com.alks.function.data.request.finance.mtlcosts.OutListDetailRequest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ms
 * @since 2024-06-25
 */
public interface PcOutListDetailMapper extends BaseMapper<PcOutListDetail> {

    //MS TODO 2024/6/27 : 入库字段没找到
    //【已知由 指令 部位 关联，且为求和出来的数据】
    /**
     * 查询外发明细数据
     * @param request 查询条件
     * @param companyId 公司id
     * @return 外发明细
     */
    List<OutListDetailDto> outListDetailQuery(@Param("request") OutListDetailRequest request, @Param("companyId") String companyId);

    /**
     * 查询外发明细求和数据
     * @param request 查询条件
     * @param companyId 公司id
     * @return 外发明细和
     */
    Map<String, BigDecimal> outListDetailSumQuery(@Param("request") OutListDetailRequest request, @Param("companyId") String companyId);
    /**
     * 结算作业查询
     * @param financeYymm 结算月份
     * @param accountName 结算方式
     * @param vendorName 厂商
     * @param companyId 公司ID
     * @param userName 用户名
     * @return 结算新增数据
     */
    List<PcApAmt> tempAddQuery(@Param("financeYymm") String financeYymm, @Param("accountName") String accountName, @Param("vendorName") String vendorName, @Param("companyId") String companyId, @Param("userName") String userName);

    /**
     * 结算作业删除回滚
     * @param slipNo 结算单号
     * @param companyId 公司ID
     */
    void tempDel(@Param("slipNo") String slipNo, @Param("companyId") String companyId);

    /**
     * 结算作业写入结算单号
     *
     * @param financeYymm 结算月份
     * @param accountName 结算方式
     * @param vendorName  厂商
     * @param balanceNo   结算单号
     * @param companyId   公司ID
     */
    void tempAddUp(@Param("financeYymm") String financeYymm, @Param("accountName") String accountName, @Param("vendorName") String vendorName, @Param("balanceNo") String balanceNo, @Param("companyId") String companyId);

    /**
     * 结算厂商回显
     *
     * @param financeYymm
     * @param accountName
     * @param companyId   公司ID
     * @return 厂商名称
     */
    List<Map<String, String>> vendorBack(@Param("financeYymm") String financeYymm, @Param("accountName") String accountName, @Param("companyId") String companyId);

    /**
     * 外发厂商回显
     *
     * @param vendorSearch 厂商搜索
     * @return
     */
    List<String> exportVendorBack(@Param("vendorSearch") String vendorSearch, @Param("companyId") String companyId);

    /**
     * 结算月份回显
     * @param financeSearch 结算月份搜索
     * @return 结算月份
     */
    List<String> exportFinanceBack(@Param("financeSearch") String financeSearch, @Param("companyId") String companyId);
}
